草庐IT

c++ - constexpr 计算量的实际限制

全部标签

c - 如何通过 Windows 上的 system() 函数将换行符作为参数传递?

通常可以使用^来转义命令行中的字符。但我无法让它工作。这是一个测试程序,CommandArguments.exe,它打印它得到的参数。intmain(intargc,char*argv[]){inti,j;for(i=0;i问题程序LineBreakCommandArguments.exe如下:voidmain(void){system("CommandArguments^\n");//^\ndoesnotreallypassalinebreak...}LineBreakCommandArguments.exe的输出:>LineBreakCommandArguments.exe0:Co

windows - 如何在VBS 中使用MsgBox 中的计算机名环境变量?

我正在尝试为Windows创建我自己的自定义对话框,使用快捷方式/wscript/和VBS从头开始​​制作它们,使它们尽可能逼真。对于我的一些错误/对话框,我想在对话框中使用%computername%变量以使其看起来更真实-例如“驱动器C:已在%computername%上格式化我以前在批处理文件中使用过这样的变量,它总是有效。我意识到VBS是一种具有不同语法的不同语言,但我尝试过的示例都没有奏效。这是我最初尝试做的:SetWshShell=WScript.CreateObject("WScript.Shell")x=msgbox("WindowshasreformattedDriv

c - openmp的性能

我正在测试openmp的性能,但我发现了一些奇怪的结果,这是我的测试代码:voidtest(){inta=0;clock_tt1=clock();intlength=50000;double*t3=newdouble[length]();double*t4=newdouble[length]();for(inti=0;i当我分别设置length=50000或length=100000或length=150000时,结果如图所示:奇怪的是耗时不是直线上升(length=150000时的耗时几乎是length=50000时的5倍),而计算是一条直线。同样奇怪的是,当length=15000

c++ - 在没有 Windows.h 的情况下在 WIN32 上编译

作为学习练习,我编写了一个标准的Windows程序,该程序注册并创建了一个窗口,但没有显式包含Windows.h。Windows.h中的所有header符号都已提取并放入我包含在源代码中的自定义header中。自定义header具有类型定义,例如CreateWindow和WNDCLASSEX。程序是用cl.exe编译的,命令行如下:clmain.cpp/linkopengl32.libgdi32.libkernel32.libuser32.lib据我了解,这些.lib文件是导入库,它们在进程启动时执行设置工作以从关联的DLL加载函数地址。如果main.cpp直接包含Windows.h,

c - 在 Win32 TIB 中保存数据

Thread-InformationBlock应该广为人知,可以用来访问一些重要的信息。但是我可以用它来保存数据吗?我已经看到该结构在偏移14h(x86)/28h(x86-64)处有一个用于任意指针的槽。我可以使用这个指针从我自己的调度程序指向我自己的线程结构吗?或者它会被其他东西覆盖吗? 最佳答案 您可以使用TlsAlloc()分配线程本地存储的函数。每个TLS索引都可以保存一个指针大小的值,因此如果需要,您可以使用TLS插槽指向更大的已分配数据结构。参见UsingThreadLocalStorage举个例子。

windows - 在 Windows/NTFS 上可以将符号链接(symbolic link)移动到另一台计算机吗?

出于涉及Windows服务器的安全测试的目的,我想尝试将符号链接(symboliclink)上传到Windows网络应用程序。然而,根据官方提供的信息,尚不清楚Windows硬链接(hardlink)(我认为它与NTFS连接相同)是否作为可以从硬盘复制的文件存在,就像在Linux上一样。它含糊不清,但我觉得NTFS联结是不同于“常规”文件的其他类型的文件系统工件-我找不到文档来确认或否认这一点。I.ENTFS我想知道NTFS是否支持直接操作符号链接(symboliclink)记录,以便我可以将符号链接(symboliclink)移动到另一台计算机。我知道Windows软链接(softl

c - 如何使用 `FindResourceEx()` 和 `LoadResource()` 加载新菜单?

我正在使用WindowsAPI用C语言开发多语言Win32程序。它将允许用户选择界面的语言。根据MSDNdocumentation,我需要使用FindResourceEx()+LoadResource()并且不是不可靠的SetThreadLocale().我的问题是:我不知道如何从资源中加载菜单。考虑到下面的示例代码,应该如何修改它来加载和更新菜单?HMENUhMenu=GetMenu(hWnd);SetMenu(hWnd,NULL);DestroyMenu(hMenu);HRSRCrcMenu=FindResourceEx(NULL,RT_MENU,MAKEINTRESOURCE(I

c - 增加 Clion 中 C 程序的堆栈大小

如何为具有深度递归调用的C程序增加堆栈的最大大小?项目是否有任何配置可以指定可执行文件的堆栈或堆大小? 最佳答案 我通过在项目的CMakeList.txt中添加以下链接器标志解决了这个问题MATH(EXPRstack_size"16*1024*1024")#16Mbset(CMAKE_EXE_LINKER_FLAGS"-Wl,--stack,${stack_size}") 关于c-增加Clion中C程序的堆栈大小,我们在StackOverflow上找到一个类似的问题:

windows - 函数 Hook 实际上是如何工作的? WinAPI, C++

我正在将我的DLL注入(inject)到一个进程中,然后像这样Hook一个函数:(recv)BOOLHookFunction(LPCWSTRmoduleName,LPCSTRfuncName,LPVOIDfuncProxy,unsignedchar*lpBackup){BYTEjmp[6]={0xe9,0x00,0x00,0x00,0x00,0xc3};DWORDfuncAddr=(DWORD)GetProcAddress(GetModuleHandle(moduleName),funcName);DWORDprev;VirtualProtect((LPVOID)funcAddr,6,

c - 将 SQL_BINARY 数组数据作为参数传递时如何避免零终止? (ODBC 驱动程序)

我刚刚了解到WindowsODBC驱动程序API需要一组SQL_BINARY数据作为输入参数,以零字节结束。尽管我没有在文档中找到这样的语句,但我通过使用以下代码执行存储过程发现了这一点:最小示例//ParameterbindingBYTEdata[10]={15,3,54,144,34,211,200,147,15,74};SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_BINARY,SQL_BINARY,10,0,data,0,NULL);//ProcedureexecutionSQLRETURNres=SQLExecDirect(hs